Ensuring application compatibility with a multitude of graphic display subsystem is an extremely important, yet tedious and labor intensive, challenge. It is made even more challenging due to the ever-changing nature of both application software and graphic display subsystems. The importance of application compatibility arises from the fact that a significant amount of catastrophic run-time failures is caused by display instability and, in particular, display subsystem instability.
One way in which application compatibility is achieved is by ensuring that the output generated by a target display subsystem is comparable to the output generated by an established, reference display subsystem for the same set of drawing instructions. When a target display subsystem's generated output is sufficiently comparable to a reference display subsystem's generated output, the target display subsystem is said to be compliant with the reference display subsystem.
Microsoft's Windows Hardware Quality Lab (WHQL) program has been successful in ensuring a base level of compliance among certified graphic display subsystems. Display subsystem providers submit their subsystems (typically including a graphics display interface and an associated display driver) to the WHQL where they are tested to determine whether the output generated by a submitted display subsystem is comparable to the output generated by a reference display subsystem. When a submitted display subsystem's output meets or exceeds a certain level of comparability, that subsystem receives a WHQL certification. A software developer may reasonably expect and rely upon the fact that a display subsystem certified by the WHQL will behave in a relatively consistent and predictable manner, at least at a base level. However, the WHQL certification process is cumbersome and labor intensive, including certain visual inspections to determine whether a graphic display system is compliant with the requisite standards for certification.
Additionally, display subsystem providers are constantly creating new subsystems that are more powerful, sophisticated, and complex. These sophisticated and complex operations are designed to enable software application developers to improve their products. However, due to these subsystems' more complex nature, they increasingly become more difficult and time consuming to fully test for compliance using current methods. Even then, certification ensures only a basic level of compliance.
Because some of the more sophisticated and complex operations are beyond the basic level of certification, they may be viewed as unreliable by software developers. Consequently, instead of taking full advantage of these new operations and abilities, software developers typically opt for one of the following: (1) “dumb down” their application; or (2) add hardware-specific code into their application to deal with problem areas associated with a particular display subsystem. “Dumbing down” an application means that a software developer foregoes using the more sophisticated and powerful, but potentially unreliable, operations. This, of course, also means that the application may not perform at the level the software developer intended, or at least at a loss of performance. Alternatively, adding hardware-specific code creates difficulties for software developers because such code must be updated in order to be kept current with new display subsystems. Further, hardware-specific code cannot be easily adapted when a display subsystem provider makes changes to correct subsystem reliability issues. This has the same effect as “dumbing down” the code. Still further, hardware-specific code leads to code bloat: an increase in the code size, usually accompanied with a commensurate performance loss.
What is needed is a way to ensure a higher level of reliability of display subsystems among a variety of software applications. Additionally, the compliance certification process should be more automated, eliminating the labor-intensive nature of the process, as well as subjective visual inspections.